// 全局数据管理
App({
  onLaunch: function() {
    // 展示本地存储能力
    const logs = wx.getStorageSync('logs') || [];
    logs.unshift(Date.now());
    wx.setStorageSync('logs', logs);
    
    // 初始化今日学习进度
    this.initDailyProgress();
    
    // 检查登录状态
    this.checkLoginStatus();
    
    // 获取系统信息
    this.getSystemInfo();
  },
  
  // 初始化今日学习进度
  initDailyProgress: function() {
    // 获取今天的日期
    const today = new Date().toISOString().split('T')[0];
    
    // 从本地存储获取学习进度数据
    const dailyProgress = wx.getStorageSync('dailyProgress') || {};
    
    // 如果今天没有数据，初始化今天的数据
    if (!dailyProgress[today]) {
      dailyProgress[today] = {
        completed: 0,
        total: 50  // 默认每日目标50个单词
      };
      wx.setStorageSync('dailyProgress', dailyProgress);
    }
    
    // 检查连续打卡天数
    this.checkStreakDays(dailyProgress);
  },
  
  // 检查连续打卡天数
  checkStreakDays: function(dailyProgress) {
    const today = new Date().toISOString().split('T')[0];
    const yesterday = new Date();
    yesterday.setDate(yesterday.getDate() - 1);
    const yesterdayStr = yesterday.toISOString().split('T')[0];
    
    // 获取所有有学习记录的日期
    const progressDates = Object.keys(dailyProgress).filter(date => {
      return dailyProgress[date].completed > 0;
    }).sort();
    
    // 获取最近一次学习的日期
    let lastStudyDate = '';
    if (progressDates.length > 0) {
      lastStudyDate = progressDates[progressDates.length - 1];
    }
    
    // 计算连续打卡天数
    let streakDays = 0;
    
    if (progressDates.length > 0) {
      // 如果今天有学习或者昨天是最后一次学习
      if (dailyProgress[today]?.completed > 0 || lastStudyDate === yesterdayStr) {
        // 从最新日期往前数，检查每天是否连续
        let checkDate = today;
        if (dailyProgress[today]?.completed > 0) {
          streakDays = 1;
        } else {
          checkDate = yesterdayStr;
          if (progressDates.includes(checkDate)) {
            streakDays = 1;
          }
        }
        
        // 向前检查连续天数
        let continuousStreak = true;
        let dateToCheck = new Date(checkDate);
        
        while (continuousStreak && streakDays < 365) { // 设置一个上限，避免无限循环
          // 获取前一天
          dateToCheck.setDate(dateToCheck.getDate() - 1);
          const prevDateStr = dateToCheck.toISOString().split('T')[0];
          
          // 检查前一天是否有学习记录
          if (progressDates.includes(prevDateStr)) {
            streakDays++;
          } else {
            continuousStreak = false;
          }
        }
      }
    }
    
    // 更新全局数据
    this.globalData.studyData.streakDays = streakDays;
    
    // 记录当前总学习天数
    this.globalData.studyData.learningDays = progressDates.length;
  },
  
  // 检查用户登录状态
  checkLoginStatus: function() {
    wx.checkSession({
      success: () => {
        // 会话未过期，用户仍然登录中
        this.globalData.isLoggedIn = true;
      },
      fail: () => {
        // 会话已过期，需要重新登录
        this.globalData.isLoggedIn = false;
      }
    });
  },
  
  // 获取系统信息
  getSystemInfo: function() {
    try {
      // 获取基础信息
      const appBaseInfo = wx.getAppBaseInfo();
      // 获取设备信息
      const deviceInfo = wx.getDeviceInfo();
      // 获取窗口信息
      const windowInfo = wx.getWindowInfo();
      
      // 合并信息
      this.globalData.systemInfo = {
        ...appBaseInfo,
        ...deviceInfo,
        ...windowInfo
      };
    } catch (e) {
      // 兼容旧版本API
      wx.getSystemInfoSync({
        success: (res) => {
          this.globalData.systemInfo = res;
        }
      });
    }
  },
  
  // 全局数据
  globalData: {
    userInfo: null,
    isLoggedIn: false,
    systemInfo: null,
    // 用户学习数据
    studyData: {
      totalWords: 0,
      masteredWords: 0,
      learningDays: 0,
      streakDays: 0
    },
    // 当前选中的词书
    currentWordbook: {
      id: 2,
      name: '初二英语词汇'
    }
  }
})
